using UnityEditor;
using UnityEngine;

namespace DA.AnimGraph.Editor {
 
    public class AGABehaviour : UnityEditor.Editor {
        //static GUIContent iconContent;

        //// 添加 Project 窗口的事件监听
        //[InitializeOnLoadMethod]
        //static void Init() {
        //    // 获取内置图标（这里使用Unity的Console窗口图标为例）
        //    iconContent = EditorGUIUtility.IconContent("BlendTree Icon");

        //    EditorApplication.projectWindowItemOnGUI += OnProjectWindowItemGUI;
        //}

        //// 检测双击事件并处理文件类型
        //private static void OnProjectWindowItemGUI(string guid, Rect selectionRect) {
        //    // 获取项目窗口中被选中的文件路径
        //    string path = AssetDatabase.GUIDToAssetPath(guid);

        //    // 仅处理文件，忽略文件夹
        //    if (File.Exists(path)) {

        //        //// 如果是文件且是 JSON 或二进制文件
        //        if (path.EndsWith(".agb")) {

        //            if (iconContent != null) {
        //                // 在 Project 窗口中绘制图标
        //                GUI.DrawTexture(new Rect(selectionRect.x, selectionRect.y, 16, 16), iconContent.image);
        //            }
        //        }

        //        // 检测双击
        //        if (Event.current != null && Event.current.type == EventType.MouseDown && Event.current.clickCount == 2) {
        //            // 检查是否双击了我们关心的文件类型（如 .json）
        //            if (selectionRect.Contains(Event.current.mousePosition) && path.EndsWith(".agb")) {
        //                // 调用自定义的打开操作
        //                OpenJsonFile(path);
        //                Event.current.Use(); // 使用事件，阻止传播
        //            }
        //        }
        //    }
        //}

        // 自定义打开 JSON 文件的操作
        private static void OpenAGA(string path) {
            //var bridge = BridgeHandle.Open(path);
            AnimGraphEditorWindow.OpenWindow(path);
        }

        [UnityEditor.Callbacks.OnOpenAsset]
        public static bool OnOpenAsset(int instanceID, int lineNumber) {
         
            Object asset = EditorUtility.InstanceIDToObject(instanceID);

            // 判断资源类型
            if (asset is AnimGraphArchiveAsset) {
                string assetPath = AssetDatabase.GetAssetPath(instanceID);
                OpenAGA(assetPath);
                return true;
            }
            return false;
        }

    }

}
